/*
 * llamada al cargarse la pagina
 */
function load() {
    plot = new Phasor(document.getElementById("canvas"), 20, 20);
    askMeasure();
}

/*
 * inicia un request de una medicion
 */
function askMeasure() {
    var req = new Request();
    req.data.cmd = "get_last_measure";
    client = new Client(doneMeasure, req);
    timeout = new Timeout(scheduledMeasure, 10, null);
}

/*
 * cuando recibe la rta del request o hubo algun error
 */
function doneMeasure(error)
{
    if (error == 0) {
        addMeasure(client.getResponse().data);
    }
    client = null;
    if (timeout == null) {
        askMeasure();
    }
}

/*
 * suma la medición, la manda a mostrar.
 */
function addMeasure(data) {
//    console.log(data.resp);
    plot.clear();
    var vector = "voltage";
    plot.addVector(vector, data[vector + "_mod"], data[vector + "_ang"]);
    vector = "current";
    plot.addVector(vector, data[vector + "_mod"], data[vector + "_ang"]);
    plot.draw();
}

/*
 * callback para cuando se supone deberíamos tomar otra medición.
 * solo se ejecuta si la anterior fue tomada.
 */
function scheduledMeasure(object) {
    timeout = null;
    if (client == null) {
        askMeasure();
    }
}

var client = null;
var timeout = null;
var plot;
